package ar.uba.fi.algo3.algoflight.model.formas;

import java.util.ArrayList;
import java.util.List;

import ar.uba.fi.algo3.algoflight.model.Posicion;

public class Rectangulo extends Figura {

	private int base;
	private int altura;

	public Rectangulo(int base, int altura) {
		this.base = base;
		this.altura = altura;
	}

	private List<Posicion> getPuntosVertices(Posicion puntoInicial) {
		Posicion temporal = puntoInicial.clone();
		List<Posicion> puntosVertices = new ArrayList<Posicion>();
		puntosVertices.add(temporal.clone());
		temporal.sumarPosicion(new Posicion(base, 0));
		puntosVertices.add(temporal.clone());
		temporal = puntoInicial.clone();
		temporal.sumarPosicion(new Posicion(0, altura));
		puntosVertices.add(temporal.clone());
		temporal = puntoInicial.clone();
		temporal.sumarPosicion(new Posicion(base, altura));
		puntosVertices.add(temporal.clone());
		return puntosVertices;
	}

	@Override
	public boolean hayInterseccion(Posicion posicion, Figura otraFigura,
			Posicion posOtraFigura) {
		List<Posicion> puntosVerticesPropios = getPuntosVertices(posicion);
		List<Posicion> puntosVerticesOtroObjeto = ((Rectangulo) otraFigura)
				.getPuntosVertices(posOtraFigura);

		return puntosVerticesPropios.get(1).getCoordX() >= puntosVerticesOtroObjeto
				.get(2).getCoordX()
				&& puntosVerticesPropios.get(0).getCoordX() <= puntosVerticesOtroObjeto
						.get(1).getCoordX()
				&& puntosVerticesPropios.get(1).getCoordY() <= puntosVerticesOtroObjeto
						.get(3).getCoordY()
				&& puntosVerticesPropios.get(2).getCoordY() >= puntosVerticesOtroObjeto
						.get(1).getCoordY();
	}

	@Override
	public Posicion getTamanioPerimetro() {
		return new Posicion(base, altura);
	}

}
